package com.boatAnchorAssistant.service.repository.in;

import com.boatAnchorAssistant.pojo.dto.user.MoveUserDto;
import com.boatAnchorAssistant.pojo.dto.user.SelectUserRoleBindDto;
import com.boatAnchorAssistant.pojo.entity.Device;
import com.boatAnchorAssistant.pojo.entity.User;
import com.boatAnchorAssistant.pojo.vo.user.GetUserListByRoleVo;
import com.boatAnchorAssistant.pojo.vo.user.GetUserListVo;
import nirvana.core.repository.IRepository;
    import com.boatAnchorAssistant.pojo.dto.user.SelectUserDto;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

/**
* 【描 述】：
* 【环 境】：J2SE
* 【详 细】：
*
*/
public interface UserRepository extends IRepository< User > {


    /**
    * 搜索用户
    * @param dto
    * @return
    */
    Page< User > selectUser(SelectUserDto dto);

    /**
     * 获取用户角色绑定列表
     * @param dto
     * @return
     */
    Page<GetUserListByRoleVo> getUserRoleBindList(SelectUserRoleBindDto dto);


    /**
     * 批量删除用户
     * @param idList
     */
    void bathRemoveUser(List<Long> idList);


    /**
     * 批量移动用户到其他部门下
     * @param dto
     */
    void bathMoveUser(MoveUserDto dto);

    /**
     * 获取企业下所有用户的id列表
     *
     * @param tenantId
     * @return
     */
    List<Long> getUserIdListByTenantId(Long  tenantId);


    /**
     * 获取部门下的用户
     * @param dto
     * @return
     */
    Page<GetUserListVo> getUserListByDepartment(SelectUserDto dto);


    /**
     * 根据账号获取用户
     * @return
     */
    User getUserByAccount(String account,Long tenantId);


    /**
     * 获取Map
     * @param ids
     * @return
     */
    Map<Long, User> getMap(List<Long> ids);
}